class EstadisticasController < ApplicationController
  def index
    list
    render :action => 'list'
  end

  # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
  verify :method => :post, :only => [ :destroy, :create, :update ],
         :redirect_to => { :action => :list }

  def list
    @encuentros_pages, @encuentros = paginate :encuentros, :per_page => 10
  end

  def show
    @encuentro = Encuentro.find(params[:id])
    @estadisticas = @encuentro.estadisticas
  end

  def new
    @estadistica = Estadistica.new
    @encuentro = Encuentro.find(params[:id])
  end

  def create
    @estadistica = Estadistica.new(params[:estadistica])
    @equipo = Equipo.find(params[:id_equipo])
    
    @estadistica.equipo = @equipo
    @encuentro = Encuentro.find(params[:id_encuentro])
    
    @estadistica.encuentro  =  @encuentro
    
    
    if @estadistica.save
      @encuentro.save
      check_records @estadistica
      flash[:notice] = 'Estadistica han sido creadas exitosamente'
        if @encuentro.estadisticas.count >= 2
          redirect_to :action => 'list'
        else
          @hide_id = @encuentro.participantes.index( @equipo) +1
        end
    else
      render :action => 'new'
    end
  end

  def edit
    @encuentro = Encuentro.find(params[:id])
    @estadisticas = @encuentro.estadisticas
  end

  def update
    @equipo = Equipo.find(params[:id_equipo])
    @encuentro = Encuentro.find(params[:id_encuentro])
    @estadistica = nil;
    @encuentro.estadisticas.each { |e|
      if (e.equipo == @equipo)
        @estadistica = e
      end
    }
    if @estadistica.update_attributes(params[:estadistica])
        flash[:notice] = 'La estadistica ha sido actualizada con exito.'
            check_records @estadistica
          @hide_id = @encuentro.participantes.index( @equipo) +1
            if @hide_id == 2
              redirect_to :action => 'show', :id => @encuentro
            else
              render :action => 'create'
            end
    else
      render :action => 'edit'
    end
    
  end

  def destroy
    Estadistica.find(params[:id]).destroy
    redirect_to :action => 'list'
  end
  
  private
  
  def check_records estadistica
    tipos = ["pts", "flt", "ptsf", "rbt", "bprd"]
    descripcion = ""
    valor = 0
    tipos.each { |tipo|
    case tipo
      when "pts" 
        valor = estadistica.puntos
      when "flt" 
        valor = estadistica.faltas 
      when "ptsf" 
        valor = estadistica.puntos_de_tres
      when "rbt"
        valor = estadistica.rebotes
      when "bprd"
        valor = estadistica.balon_perdido
    end
  
    Record.find(:all, :conditions => "tipo='equipo' and descripcion='#{tipo}'") .each { |record|
  string = "#{ string } #{record.valor.to_i} #{valor} "
         if( record.valor.to_i < valor )
          record.valor = valor
          record.nuevo = true
          record.equipo_nombre = estadistica.encuentro.participantes[0].nombre
          Noticia.create( 
                  :fecha => Time.now,
                  :titulo => "Nuevo record",
                  :contenido => "el equipo #{record.equipo_nombre}  categoria #{estadistica.encuentro.participantes[0].categoria} de la delegacion #{estadistica.encuentro.participantes[0].delegacion.nombre} rompe record #{record.nivel} de #{human_record_description( record.descripcion).downcase  }",
                  :autor => "sistema" ).save
          record.save
        end
    }
  }
  end

private
  def human_record_description description
       case description
          when "pts"
            return "Puntos anotados en un partido"
    
          when "flt"
            return "Faltas"
    
          when "ptsf"
            return  "Puntos de tres anotados"
    
          when "rbt"
            return "Rebotes"
    
          when "pts"
            return "Puntos anotados en un partido"
    
          when "bprd"
            return "Balones perdidos"
    end
  end

end
